import axios from 'axios'
import store from '../store'
import {getToken} from '@/utils/auth'
import qs from 'qs'
import { Toast } from 'vant'

const errorTips = {
  '4042': '登录过期（其他人登录）',
  '4043': '登录超时',
  '4044': '该账号已经被删除',
  '4045': '该账号已经被冻结',
}

// 创建axios实例
const service = axios.create({
  baseURL: process.env.NODE_ENV === 'production' ? 'http://www.zerolimit.vip/' : '/api', // api的base_url, // api的base_url
  timeout: 30000, // 请求超时时间,
  headers: {'X-Requested-With': 'XMLHttpRequest', 'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8'} //'X-Requested-With':'XMLHttpRequest',
})

// request拦截器
service.interceptors.request.use(config => {

  if (config.method === 'post' && config.data instanceof FormData === false) {
    // console.log(config.data);
    config.data = qs.stringify(config.data);
  }

  if (store.getters.token) {
    config.headers.token = getToken() // 让每个请求携带自定义token 请根据实际情况自行修改
  }
  return config
}, error => {
  // Do something with request error
  console.log(error) // for debug
  Promise.reject(error)
})

// respone拦截器
service.interceptors.response.use(
  response => {
    /**
     * code为非20000是抛错 可结合自己业务进行修改
     */
    // console.log(response)
    const res = response.data;
    // console.log(res);
    // console.log(store);
    if (res.msg || res.info) {
      Toast({
        message: res.msg || res.info
      })
    }

    if (res.status === 1) {
      switch (res.type) {
        case 1:
          console.log('更新会员信息')
          store.dispatch('GetInfo')
          break;
        case 2:
          console.log('更新资金信息')
          store.dispatch('GetCurrencyInfo')
          break;
        case 3:
          console.log('更新会员信息和资金信息')
          store.dispatch('GetInfo')
          store.dispatch('GetCurrencyInfo')
          break;
      }
      return res;
    } else if(res.status === -4041) {
      Toast('api验证签名失败 禁止一切操作');
      return Promise.reject(res);
    } else if (res.status === -4042 || res.status === -4043 || res.status === -4044 || res.status === -4045) {
      // 跳转到登录页面
      Toast(errorTips[res.status.toString().replace('-','')]);
      store.dispatch('LogOut').then(() => {
        store.commit('CHANGE_LOGIN',true);
      })
      return Promise.reject(res);
    } else {
      return Promise.reject(res);
    }
  },
  error => {
    console.log(error.response); // for debug
    Toast({
      message: error.response.status + ' ' + error.response.statusText
    })

    return Promise.reject(error)
  }
)

export default service
